#include <iostream>
#include <set>

using namespace std;

//set/multiset 容器
//set基本概念:所有元素都会在插入时自动被排序
//本质：set/multiset属于关联式容器，底层结构是用二叉树实现。
//set和multiset区别：set不允许容器中有重复的元素,multiset允许容器中有重复的元素

//set构造和赋值:创建set容器以及赋值
//构造：
//1、set<T> st;                        //默认构造函数：
//2、set(const set &st);               //拷贝构造函数
//赋值：
//set& operator=(const set &st);      //重载等号操作符

void printS(set<int> &s) {
    for (set<int>::iterator it = s.begin(); it != s.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;
}

void test() {
    set<int> s1;//默认构造
    s1.insert(10);//插入数据 只有insert方式
    s1.insert(30);
    s1.insert(20);
    s1.insert(40);
    //set容器特点，所有元素插入时自动被排序
    //set容器不允许插入重复值
    printS(s1);

    set<int> s2(s1);//拷贝构造
    printS(s2);

    set<int> s3;//赋值
    s3 = s2;
    printS(s3);
}

int main() {
    test();
    return 0;
}